/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package AccesoDatos.DAOLocal;

import AccesoDatos.IDAO.IDAOArchivo;
import ObjetoDominio.Archivo;
import ObjetoDominio.Usuario;
import Session.ArchivoLog;
import java.io.File;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author opr
 */
public class DAOArchivoLocal implements IDAOArchivo {

    @Override
    public void DescargarArchivo(Archivo arhivo) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void ReanudarDescarga(Archivo arhivo) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void CargarArchivo(Archivo arhivo) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void ReanudarCargar(Archivo arhivo) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public synchronized  List<Archivo> ObtenerListaArchivo(Usuario usuario) {
        List<Archivo> retorno = new ArrayList<Archivo>();
        try {
            List<Archivo> auxiliar = ArchivoLog.ObtenerArchivoLog().ObtenerArchivos(usuario);
            List<Archivo> auxiliar2 = new ArrayList<Archivo>(auxiliar);
            Archivo prueba;
            for(Archivo archivo : auxiliar){              
                prueba = archivo;
                for(Archivo archivo2 : auxiliar2){
                    if(archivo2.getNombre().equalsIgnoreCase(archivo.getNombre()))
                        if(archivo.getFecha().getTime() < archivo2.getFecha().getTime())
                            prueba = archivo2;
                }
                
                if(!retorno.contains(prueba)){
                    if(!prueba.isCargando()){
                        File file = new File(prueba.getRuta());
                        if(file.length() > prueba.getDescargado())
                            prueba.setDescargado(file.length());
                    }
                    retorno.add(prueba);
                }
            }
            
        } catch (Exception e) {
                System.out.println(e);
        }
        finally{
            return retorno;
        }
    }
    
}
